﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Interface.cs" company="Data Ductus Malmö">
//   (c) 2010 - 2012 Data Ductus Malmö AB
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace DataDuctus.Snmp.Persistor.Core.Tests.TestData
{
  using System;

  using DataDuctus.Snmp.Persistor.Core.Attributes;

  using Lextm.SharpSnmpLib;

  /// <summary>
  /// The interface.
  /// </summary>
  [Entity(BaseOid = "1.3.6.1.2.1.2.2.1", Description = "This class encapsulates the ifTable")]
  public class Interface
  {
    #region Public Properties

    /// <summary>
    /// Gets or sets the admin status.
    /// </summary>
    [Property(SubOid = 7)]
    public int AdminStatus { get; set; }

    /// <summary>
    /// Gets or sets the description.
    /// </summary>
    [Property(SubOid = 2)]
    public string Description { get; set; }

    /// <summary>
    /// Gets or sets the in discards.
    /// </summary>
    [Property(SubOid = 13)]
    public uint InDiscards { get; set; }

    /// <summary>
    /// Gets or sets the in errors.
    /// </summary>
    [Property(SubOid = 14)]
    public uint InErrors { get; set; }

    /// <summary>
    /// Gets or sets the in no unicast packets.
    /// </summary>
    [Property(SubOid = 12)]
    public uint InNoUnicastPackets { get; set; }

    /// <summary>
    /// Gets or sets the in octets.
    /// </summary>
    [Property(SubOid = 10)]
    public uint InOctets { get; set; }

    /// <summary>
    /// Gets or sets the in unicast packets.
    /// </summary>
    [Property(SubOid = 11)]
    public uint InUnicastPackets { get; set; }

    /// <summary>
    /// Gets or sets the index.
    /// </summary>
    [Index]
    [Property(SubOid = 1)]
    public int Index { get; set; }

    /// <summary>
    /// Gets or sets the last change.
    /// </summary>
    [Property(SubOid = 9)]
    public TimeSpan LastChange { get; set; }

    /// <summary>
    /// Gets or sets the mtu.
    /// </summary>
    [Property(SubOid = 4)]
    public int Mtu { get; set; }

    /// <summary>
    /// Gets or sets the oper status.
    /// </summary>
    [Property(SubOid = 8)]
    public int OperStatus { get; set; }

    /// <summary>
    /// Gets or sets the out discards.
    /// </summary>
    [Property(SubOid = 19)]
    public uint OutDiscards { get; set; }

    /// <summary>
    /// Gets or sets the out errors.
    /// </summary>
    [Property(SubOid = 20)]
    public uint OutErrors { get; set; }

    /// <summary>
    /// Gets or sets the out no unicast packets.
    /// </summary>
    [Property(SubOid = 18)]
    public uint OutNoUnicastPackets { get; set; }

    /// <summary>
    /// Gets or sets the out octets.
    /// </summary>
    [Property(SubOid = 16)]
    public uint OutOctets { get; set; }

    /// <summary>
    /// Gets or sets the out packet queue length.
    /// </summary>
    [Property(SubOid = 21)]
    public uint OutPacketQueueLength { get; set; }

    /// <summary>
    /// Gets or sets the out unicast packets.
    /// </summary>
    [Property(SubOid = 17)]
    public uint OutUnicastPackets { get; set; }

    /// <summary>
    /// Gets or sets the physical address.
    /// </summary>
    [Property(SubOid = 6)]
    public string PhysicalAddress { get; set; }

    /// <summary>
    /// Gets or sets the specific.
    /// </summary>
    [Property(SubOid = 22)]
    public ObjectIdentifier Specific { get; set; }

    /// <summary>
    /// Gets or sets the speed.
    /// </summary>
    [Property(SubOid = 5)]
    public uint Speed { get; set; }

    /// <summary>
    /// Gets or sets the type.
    /// </summary>
    [Property(SubOid = 3)]
    public int Type { get; set; }

    /// <summary>
    /// Gets or sets the unknown protocol packets.
    /// </summary>
    [Property(SubOid = 15)]
    public uint UnknownProtocolPackets { get; set; }

    #endregion
  }
}